/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package suministros.ejb30.business;

import java.math.BigDecimal;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import suministros.ejb30.DAO.SumiGestionPedidoDAOLocal;
import suministros.ejb30.DAO.SumiRegistrarPedidoLocal;
import suministros.ejb30.TO.*;
import suministros.ejb30.entity.DetallePedidoSuministro;
import suministros.ejb30.entity.DetallePedidoSuministroPK;
import suministros.ejb30.entity.Parametros;
import suministros.ejb30.entity.Pedido;
/**
 *
 * @author Renato
 */
@Stateless
public class SumiAdministracionPedido implements SumiAdministracionPedidoLocal {
  @EJB
  SumiGestionPedidoDAOLocal administracionPedidoDAO;

  @EJB
  SumiRegistrarPedidoLocal registrarPedidoDAO;

  public List<ZonaTO> getListaZonas()
    throws Exception
  {
    return this.administracionPedidoDAO.getListaZonas();
  }

  public List<LocalidadTO> getListaLocalidadZona(String idZona) throws Exception {
    return this.administracionPedidoDAO.getListaLocalidadesZona(idZona);
  }

  public List<LocalidadTO> getListaLocalidades() throws Exception {
    return this.administracionPedidoDAO.getListaLocalidades();
  }

  public List<UnidadOrganizativaTO> getListaUnidOrganizativas() throws Exception {
    return this.administracionPedidoDAO.getListaUnidOrganizativas();
  }

  public List<CentroCostoTO> getListaCentroCostos() throws Exception {
    return this.administracionPedidoDAO.getListaCentroCostos();
  }

  public List<CodPresupuestalTO> getListaCodPresupuestal() throws Exception {
    return this.administracionPedidoDAO.getListaCodPresupuestal();
  }

  public List<CuentaContableTO> getListaCtaCbles() throws Exception {
    return this.administracionPedidoDAO.getListaCtaCbles();
  }

  public List<CodigosInversionTO> getListaCodigoInversion() throws Exception {
    return this.administracionPedidoDAO.getListaCodigoInversion();
  }

  public List<TipoTO> getListaTipos() throws Exception {
    return this.administracionPedidoDAO.getListaTipos();
  }

  public List<Parametros> getListaParametros() throws Exception {
    return this.administracionPedidoDAO.getListaParametros();
  }

  public boolean insertarPedido(String usuario, String mac,Pedido pedidoPrinc, List<DetallePedidoSuministro> listadetalle) throws Exception {
    return this.registrarPedidoDAO.insertarPedido(usuario, mac,pedidoPrinc, listadetalle);
  }
  public String insertarPedidoAjusteInventario(String usuario, String mac,Pedido pedidoPrinc, List<DetallePedidoSuministro> listadetalle) throws Exception {
      return this.registrarPedidoDAO.insertarPedidoAjusteInventario(usuario, mac, pedidoPrinc, listadetalle);
  }

  public List<SuministroTO> getListaSuministros() throws Exception {
    return this.administracionPedidoDAO.getListaSuministros();
  }

  public List<Parametros> getListaParametrosLike(String id) throws Exception {
    return this.administracionPedidoDAO.getListaParametrosLike(id);
  }

  public List<PedidoTO> getListaPedidos(String und_org, String zona, String ano, String mes,String empresa) throws Exception {
    return this.administracionPedidoDAO.getPedidosConsulta(und_org, zona, ano, mes, empresa);
  }

  public List<PedidoTO> getListaPedidosInversion(String cod_proyecto, String zona, String ano, String mes) throws Exception {
    return this.administracionPedidoDAO.getPedidosConsultaInversion(cod_proyecto, zona, ano, mes);
  }
  public List<PedidoTO> getListaPedidos(String empresa) throws Exception {
    return this.administracionPedidoDAO.getPedidosAll(empresa);
  }

  public List<DetallePedidoSuministroTO> getListaDetallePedido(String cod_pedido) throws Exception {
    return this.administracionPedidoDAO.getListaDetallePedidoSuministro(cod_pedido);
  }
  
  public List<AnoTO> getListaAnos() throws Exception {
    return this.administracionPedidoDAO.getListaAnos();
  }

  public List<MesTO> getListaMes() throws Exception {
    return this.administracionPedidoDAO.getListaMes();
  }


  public List eliminarPedido(String usuario, String mac, String cod_pedido) throws Exception {
    return this.administracionPedidoDAO.eliminarPedido(usuario, mac, cod_pedido);
  }

    public List<ProyectoTO> getListaProyectos() throws Exception {
        return this.administracionPedidoDAO.getListaProyectos();
    }

    public List<NecesidadesSumiTO> getListaNecesidadesOperativas(String centro_costos, String ano,String empresa) throws Exception {
        return this.administracionPedidoDAO.getListaNecesidadesOperativas(centro_costos, ano, empresa);
    }
    public List<NecesidadesSumiTO> getListaNecesidadesInversion(String cod_proy, String ano,String empresa) throws Exception {
        return this.administracionPedidoDAO.getListaNecesidadesInversion(cod_proy, ano, empresa);
    }

    public List<NecesidadesSumiDetalleTO> getListaNecesidadesDetalleLocalidadOperativo(String centro_costo, String ano,String empresa) throws Exception {
        return this.administracionPedidoDAO.getListaDetalleNecesidadesRequerimientoOperativo(centro_costo, ano, empresa);
    }

    public List<NecesidadesSumiDetalleTO> getListaNecesidadesDetalleLocalidadInversion(String cod_proy, String ano,String empresa) throws Exception {
        return this.administracionPedidoDAO.getListaDetalleNecesidadesRequerimientoInversion(cod_proy, ano, empresa);
    }
    public boolean procesarRequerimientos(String usuario, String mac,List<NecesidadesSumiTO> listaTareas) throws Exception {
        return this.registrarPedidoDAO.procesarRequerimientos(usuario, mac,listaTareas);
    }

    public boolean procesarDetalleRequerimientos(String usuario, String mac,List<NecesidadesSumiDetalleTO> listaTareas) throws Exception {
        return this.registrarPedidoDAO.procesarDetalleRequerimientos(usuario, mac,listaTareas);
    }

    public List<DetalleOrdenTO> getListaDetallePedidoOrden(String cod_pedido) throws Exception {
        return this.administracionPedidoDAO.getListaDetallePedidoSuministroOrden(cod_pedido);
    }

    public List<AlmacenTO> getListaAlmacenesPorZona(String cod_zona) throws Exception {
          return this.administracionPedidoDAO.listaAlmacenEnZona(cod_zona);
    }

    public List<SubAlmacenTO> getListaSubAlmacenesPorAlmacen(String cod_almacen) throws Exception {
        return this.administracionPedidoDAO.listaSubAlmacenEnAlmacen(cod_almacen);
    }

    public List<PedidoTO> getPedidosPorTipoOrden(List<ZonaTO> zonas_usuario,String id_empresa) throws Exception {
        return this.administracionPedidoDAO.getPedidosPorTipoOrden(zonas_usuario,id_empresa);
    }

    public List<DetallePedidoSuministroTO> getDetallePedidoAll() throws Exception {
        return this.administracionPedidoDAO.getListaDetallePedidosAll();
    }

    public List<DetallePedidoSuministroTO> getDetallePedidosParaOrden(List<ZonaTO> zonas_usuario,String id_empresa) throws Exception {
          return this.administracionPedidoDAO.getDetallePedidosParaOrden(zonas_usuario,id_empresa);
    }

    public List<DetalleOrdenTO> getListaDetallePedidoOrden(DetallePedidoSuministroPK pk_detalle_pedido) throws Exception {
        return this.administracionPedidoDAO.getListaDetallePedidoSuministroOrden(pk_detalle_pedido);
    }

    public List<PedidoTO> getListaPedidosNoAtendidos(String cod_zona, String id_empresa) throws Exception {
        return this.administracionPedidoDAO.getListaPedidosNoAtendidos(cod_zona, id_empresa);
    }

    public boolean rechazarPedido(String cod_pedido, List<DetallePedidoSuministroTO> detalle) throws Exception {
        return this.administracionPedidoDAO.rechazarPedido(cod_pedido, detalle);
    }

    public boolean aceptarPedido(String cod_pedido, List<DetallePedidoSuministroTO> detalle) throws Exception {
        return this.administracionPedidoDAO.aceptarPedido(cod_pedido, detalle);
    }
    public void aprobarRequerrimientos(String usuario, String mac,List<NecesidadesSumiDetalleTO> listaGeneral,java.util.List<suministros.ejb30.TO.NecesidadesSumiTO> generalNecesidades) throws Exception {
          registrarPedidoDAO.aprobarRequerrimientos( usuario,  mac,listaGeneral, generalNecesidades);
        }
    public List<NecesidadesSumiTO> getListaNecesidadesOperativasAp(String centro_costos, String ano, String empresa, String zona) throws Exception {
        return this.administracionPedidoDAO.getListaNecesidadesOperativasAp(centro_costos, ano, empresa, zona);
    }
    public List<NecesidadesSumiTO> getListaNecesidadesInversionAp(String cod_proy, String ano, String empresa) throws Exception {
        return this.administracionPedidoDAO.getListaNecesidadesInversionAp(cod_proy, ano, empresa);
    }
    public List<NecesidadesSumiTO> getListaNecesidadesOperativasMod(String centro_costos, String ano, String empresa) throws Exception {
        return this.administracionPedidoDAO.getListaNecesidadesOperativasMod(centro_costos, ano, empresa);
    }
    public List<NecesidadesSumiTO> getListaNecesidadesInversionMod(String cod_proy, String ano, String empresa) throws Exception {
        return this.administracionPedidoDAO.getListaNecesidadesInversionMod(cod_proy, ano, empresa);
    }
    public List<SuministroStockTO> getStockSuministro(String id_suministro,String empresa) throws Exception{
        return this.administracionPedidoDAO.getStockSuministro(id_suministro, empresa);
    }
    public List<PedidoTO> getPedidosPorTipoOrdenServicio(List<ZonaTO> zonas_usuario) throws Exception {
        return this.administracionPedidoDAO.getPedidosPorTipoOrdenServicio(zonas_usuario);
    }
    public BigDecimal verificarDisponibilidadSuministro(String codigo, boolean es_inversion,String loca,String ano,String mes,String id_sumi, String empresa) throws Exception {
        return this.administracionPedidoDAO.verificarDisponibilidadSuministro(codigo, es_inversion, loca, ano, mes, id_sumi, empresa);
    }
     public SuministroTO getSuministroEmpresa(String codigo, String empresa) throws Exception {
     return this.administracionPedidoDAO.getSuministroEmpresa(codigo, empresa);
     }
       public StockAlmacenTO getStockSuministroUbicacion(String codigo,String subalmacen, String empresa) throws Exception {
    return this.administracionPedidoDAO.getStockSuministroUbicacion(codigo, subalmacen, empresa);
    }
     public List<StockAlmacenTO> getStockConsultar(String suministro, String subalmacen, String empresa, int tipo){
        return this.administracionPedidoDAO.getStockConsultar(suministro, subalmacen, empresa, tipo);

    }

    public List<FlujoPedidoTO> getFlujoPedido(String cod_pedido) throws Exception {
         return this.administracionPedidoDAO.getFlujoPedido(cod_pedido);
    }
    public List<SuministroTO> getDatosSuministroEmpresaRequeridos(String empresa, String zona) throws Exception {
         return administracionPedidoDAO.getDatosSuministroEmpresaRequeridos(empresa, zona);
    }
     public Boolean guardarPrecioRequerrimientos(List<SuministroTO> listasuministro) throws Exception {
        return administracionPedidoDAO.guardarPrecioRequerrimientos(listasuministro);
    }
    public Boolean verificarFechasAprobarRequerrimientos() throws Exception {
        return administracionPedidoDAO.verificarFechasAprobarRequerrimientos();
    }
        public Boolean verificarFechasHacerRequerrimientos() throws Exception {
        return administracionPedidoDAO.verificarFechasHacerRequerrimientos();
    }

    public List<ReservaSuministroTO> getReservasSuministros(String id_empresa) throws Exception {
            return this.administracionPedidoDAO.getReservasSuministros(id_empresa);
     }
    public List<SuministroTO> getDatosServicioEmpresaRequeridos(String empresa, String zona,String ccosto) throws Exception {
         return administracionPedidoDAO.getDatosServiciosEmpresaRequeridos(empresa, zona, ccosto);
    }
    public Boolean guardarPrecioRequerrimientosServicio(List<SuministroTO> listasuministro,String ccosto) throws Exception {
        return administracionPedidoDAO.guardarPrecioRequerrimientosServicios(listasuministro,ccosto);
    }

    public List<UnidadOrganizativaTO> getListaUnidOrganizativasNecesidad(String anio, String cod_uni_depend) throws Exception {
            return  this.administracionPedidoDAO.getListaUnidOrganizativasNecesidad(anio, cod_uni_depend);
    }

    public boolean aprobarRequermientosJefatura(String anio,List<UnidadOrganizativaTO> unidades ) throws Exception {
            return this.administracionPedidoDAO.aprobarRequermientosJefatura(anio, unidades);
    }
    public List<NecesidadesSumiTO> getListaNecesidadesOperativasModZona(String centro_costo, String ano, String empresa, String zona) throws Exception {
        return this.administracionPedidoDAO.getListaNecesidadesOperativasModZona(centro_costo, ano, empresa, zona);
    }
    public List<UnidadOrganizativaTO> verificarAprobacionDependencias(String unidad_organizativa) throws Exception {
        return administracionPedidoDAO.verificarAprobacionDependencias(unidad_organizativa);
    }
    public List<SuministroTO> getSuministroAdministrar(String codigo) throws Exception {
     return this.administracionPedidoDAO.getSuministroAdministrar(codigo);
  }
  public List<GrupoSuministrosTO> getListaGrupoSuministrosAdministrar(String codigo) throws Exception {
    return administracionPedidoDAO.getListaGrupoSuministrosAdministrar(codigo);
  }
  public List<GrupoSuministrosTO> getListaGrupoSuministros() throws Exception {
    return administracionPedidoDAO.getListaGrupoSuministros();
  }
   public List<GrupoSuministrosTO> getListaGrupoSuministrosPadre() throws Exception {
    return this.administracionPedidoDAO.getListaGrupoSuministrosPadre();
  }

}
